Node.js MySQL Limit

Node.js MySQL

ফলাফল সীমিত

একটি প্রশ্ন থেকে প্রত্যাবর্তিত রেকর্ডের সংখ্যা "LIMIT" বিবৃতি ব্যবহার করে সীমিত করা যেতে পারে:

উদাহরণ

"গ্রাহক" টেবিলে প্রথম 5টি রেকর্ড নির্বাচন করুন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  let sql = "SELECT * FROM customers LIMIT 5";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

উপরের কোডটি "demo_db_limit.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_limit.js

এটি আপনাকে এই ফলাফল দেবে:

[
  { id: 1, name: 'John', address: 'Highway 71'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 5, name: 'Michael', address: 'Valley 345'}
]

💡LIMIT গুরুত্বপূর্ণ নোট:

  • কর্মক্ষমতা:বড় টেবিলে কর্মক্ষমতা উন্নত করে
  • স্মৃতি:স্মৃতির ব্যবহার কমায়
  • পেজিং:ওয়েব পেজিং জন্য অপরিহার্য
  • ভিজ্যুয়ালাইজেশন:ব্যবহারকারী ইন্টারফেসে প্রদর্শিত ডেটা নিয়ন্ত্রণ করে

একটি ভিন্ন অবস্থান থেকে শুরু করুন

আপনি যদি তৃতীয় রেকর্ড থেকে শুরু করে পরবর্তী পাঁচটি রেকর্ড ফেরত দিতে চান, তাহলে আপনি "OFFSET" কীওয়ার্ড ব্যবহার করতে পারেন:

উদাহরণ

লেভেল 3 থেকে শুরু করে, পরবর্তী 5টি রেকর্ড ফেরত দিন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  let sql = "SELECT * FROM customers LIMIT 5 OFFSET 2";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

দ্রষ্টব্য: "অফসেট 2" মানে তৃতীয় অবস্থান থেকে শুরু করা, দ্বিতীয় অবস্থান নয়!

উপরের কোডটি "demo_db_offset.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_offset.js

এটি আপনাকে এই ফলাফল দেবে:

[
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'}
]

অফসেট ফাংশন

  • জিরো-বেস:অফসেট 0 প্রথম রেকর্ড থেকে শুরু হয়
  • এড়িয়ে চলুন:অফসেট N থেকে N রেকর্ড এড়িয়ে যায়
  • পেজিং:পেজিনেশন অপারেশন জন্য দরকারী
  • কর্মক্ষমতা:বড় অফসেট মান কর্মক্ষমতা কমাতে পারে

সংক্ষিপ্ত বাক্য গঠন

আপনি আপনার SQL স্টেটমেন্ট "LIMIT 2, 5" হিসাবে লিখতে পারেন, যা উপরের অফসেট উদাহরণের মতো একই ফলাফল দেবে:

উদাহরণ

লেভেল 3 থেকে শুরু করে, পরবর্তী 5টি রেকর্ড ফেরত দিন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  let sql = "SELECT * FROM customers LIMIT 2, 5";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

দ্রষ্টব্য: সংখ্যাগুলি বিপরীত হয়: "সীমা 2, 5" "সীমা 5 অফসেট 2" এর মতো।

সিনট্যাক্স ব্যাখ্যা উপসংহার
LIMIT 5 প্রথম 5 এন্ট্রি এন্ট্রি 1-5
LIMIT 5 OFFSET 2 প্রথম 2টি রেকর্ড বাদে পরবর্তী 5টি রেকর্ড৷ এন্ট্রি 3-7
LIMIT 2, 5 প্রথম 2টি রেকর্ড বাদে পরবর্তী 5টি রেকর্ড৷ এন্ট্রি 3-7
LIMIT 0, 10 সেরা 10টি পোস্ট এন্ট্রি 1-10
LIMIT 10, 10 প্রথম 10টি রেকর্ড বাদে পরবর্তী 10টি রেকর্ড৷ এন্ট্রি 11-20

উন্নত LIMIT কৌশল

ORDER BY সহ সীমাবদ্ধ করুন

// Get top 5 customers by name
con.query("SELECT * FROM customers ORDER BY name ASC LIMIT 5", function (err, result) {
  if (err) throw err;
  console.log("Top 5 customers by name:", result);
});

// Get most recent 10 orders
con.query("SELECT * FROM orders ORDER BY order_date DESC LIMIT 10", function (err, result) {
  if (err) throw err;
  console.log("Most recent 10 orders:", result);
});

WHERE এর সাথে সীমাবদ্ধ করুন

// Get first 3 active customers
con.query("SELECT * FROM customers WHERE status = 'active' LIMIT 3", function (err, result) {
  if (err) throw err;
  console.log("First 3 active customers:", result);
});

// Get limited results with complex conditions
con.query("SELECT * FROM products WHERE price > 100 AND category = 'electronics' LIMIT 5", function (err, result) {
  if (err) throw err;
  console.log("Expensive electronics (limited to 5):", result);
});

ভেরিয়েবল দ্বারা পেজিং

// Pagination with variables
const page = 2;
const pageSize = 10;
const offset = (page - 1) * pageSize;

let sql = "SELECT * FROM customers LIMIT ? OFFSET ?";
con.query(sql, [pageSize, offset], function (err, result) {
  if (err) throw err;
  console.log(`Page ${page} results:`, result);
});

// Dynamic pagination function
function getPaginatedResults(page, pageSize) {
  const offset = (page - 1) * pageSize;
  let sql = "SELECT * FROM customers ORDER BY id LIMIT ? OFFSET ?";
  
  con.query(sql, [pageSize, offset], function (err, result) {
    if (err) throw err;
    console.log(`Page ${page} (${pageSize} items):`, result);
  });
}

// Usage
getPaginatedResults(1, 5); // Page 1, 5 items
getPaginatedResults(2, 5); // Page 2, 5 items

বিভিন্ন পরিস্থিতিতে LIMIT

প্রথম এন রেকর্ড

// Get first record only
con.query("SELECT * FROM customers LIMIT 1", function (err, result) {
  if (err) throw err;
  console.log("First customer:", result[0]);
});

// Get last 5 records (assuming ordered by ID)
con.query("SELECT * FROM customers ORDER BY id DESC LIMIT 5", function (err, result) {
  if (err) throw err;
  console.log("Last 5 customers:", result);
});

এলোমেলো নমুনা

// Get random 3 records
con.query("SELECT * FROM customers ORDER BY RAND() LIMIT 3", function (err, result) {
  if (err) throw err;
  console.log("Random 3 customers:", result);
});

// Get sample data for testing
con.query("SELECT * FROM products ORDER BY RAND() LIMIT 10", function (err, result) {
  if (err) throw err;
  console.log("Random product sample:", result);
});

গ্রুপিং সহ LIMIT

// Get top product from each category
con.query(`
  SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY price DESC) as rank
    FROM products
  ) ranked 
  WHERE rank = 1
`, function (err, result) {
  if (err) throw err;
  console.log("Top product from each category:", result);
});

LIMIT সর্বোত্তম অনুশীলন

কর্মক্ষমতা

  • বড় ফলাফল সেটের জন্য সর্বদা LIMIT ব্যবহার করুন
  • ORDER BY সহ সূচীকৃত কলাম ব্যবহার করুন
  • বড় অফসেট মান এড়িয়ে চলুন
  • পেজিনেশনের জন্য WHERE সহ সূচক কলাম ব্যবহার করুন

ব্যবহারকারীর অভিজ্ঞতা

  • প্রতি পৃষ্ঠায় 10-50টি পোস্ট প্রদর্শন করুন
  • মোট সংখ্যা দেখান (পৃষ্ঠা সংখ্যার জন্য)
  • সর্বোচ্চ সীমা সেট করুন
  • ব্যবহারকারী নির্বাচন সীমা অনুমতি দিন

কোড গুণমান

  • ভেরিয়েবলের সাথে পরিসরগুলিকে পরিবর্তনযোগ্য করুন
  • পুনঃব্যবহারের জন্য পেজিনেশন ফাংশন তৈরি করুন
  • ইনপুট থেকে পরিসীমা মান পরীক্ষা করুন
  • সীমার বাইরে এমন প্রশ্নে সতর্ক থাকুন

সম্পূর্ণ উদাহরণ

একটি সম্পূর্ণ উদাহরণ যাতে সমস্ত LIMIT কৌশল রয়েছে:

const mysql = require('mysql');

// Create connection
const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database: "company_db"
});

// Connect to MySQL
con.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err.message);
    return;
  }
  
  console.log('Connected to MySQL database');
  
  // Example 1: Basic LIMIT
  console.log('\n1. First 5 customers:');
  con.query("SELECT * FROM customers LIMIT 5", (err, result) => {
    if (err) {
      console.error('Error in query 1:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 2: LIMIT with OFFSET
  console.log('\n2. Customers with OFFSET (records 3-7):');
  con.query("SELECT * FROM customers LIMIT 5 OFFSET 2", (err, result) => {
    if (err) {
      console.error('Error in query 2:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 3: Shorter syntax LIMIT
  console.log('\n3. Customers with shorter syntax (records 3-7):');
  con.query("SELECT * FROM customers LIMIT 2, 5", (err, result) => {
    if (err) {
      console.error('Error in query 3:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 4: Pagination system
  console.log('\n4. Pagination example:');
  function getCustomersPage(page, pageSize) {
    const offset = (page - 1) * pageSize;
    const sql = "SELECT * FROM customers ORDER BY id LIMIT ? OFFSET ?";
    
    con.query(sql, [pageSize, offset], (err, result) => {
      if (err) {
        console.error('Error in pagination:', err.message);
        return;
      }
      console.log(`Page ${page} (items ${offset + 1}-${offset + result.length}):`, result);
    });
  }
  
  // Get multiple pages
  getCustomersPage(1, 3); // Page 1: records 1-3
  getCustomersPage(2, 3); // Page 2: records 4-6
  
  // Example 5: Get total count for pagination
  console.log('\n5. Pagination with total count:');
  con.query("SELECT COUNT(*) as total FROM customers", (err, countResult) => {
    if (err) {
      console.error('Error getting count:', err.message);
      return;
    }
    
    const totalCustomers = countResult[0].total;
    const pageSize = 5;
    const totalPages = Math.ceil(totalCustomers / pageSize);
    
    console.log(`Total customers: ${totalCustomers}`);
    console.log(`Page size: ${pageSize}`);
    console.log(`Total pages: ${totalPages}`);
    
    // Close connection
    setTimeout(() => {
      con.end((err) => {
        if (err) {
          console.error('Error closing connection:', err.message);
          return;
        }
        console.log('\nConnection closed');
      });
    }, 2000);
  });
});

অনুশীলন করুন

একটি MySQL কোয়েরি থেকে প্রত্যাবর্তিত রেকর্ডের সংখ্যা সীমিত করতে ব্যবহৃত সঠিক SQL স্টেটমেন্ট নির্বাচন করুন।

RESTRICT
✗ ভুল! MySQL-এ "RESTRICT" একটি বৈধ SQL বিবৃতি নয়। বিদেশী কী সীমাবদ্ধতায় RESTRICT ব্যবহার করা হয়
MAXROWS
✗ ভুল! "MAXROWS" MySQL-এ একটি বৈধ SQL বিবৃতি নয়
LIMIT
✓ ঠিক আছে! "LIMIT" হল একটি বৈধ SQL স্টেটমেন্ট যা একটি MySQL কোয়েরি থেকে প্রত্যাবর্তিত রেকর্ডের সংখ্যা সীমিত করতে ব্যবহৃত হয়
TOP
✗ ভুল! MySQL-এ "TOP" একটি বৈধ SQL বিবৃতি নয়। TOP SQL সার্ভারে ব্যবহৃত হয়